home *** CD-ROM | disk | FTP | other *** search
-
- The Origami editor has an Arexx Port (it did take a long time, but now
- it is ready ... in a small version).
-
- This part of the manual describes the arexx features for the amiga port.
- It is the first time Arexx is supported, so there may be some bugs in
- it. Please report them !!!
-
- The port has not all the features i would like to have, but i am working
- on it. See the coming features in the last section of this manual.
-
- {{{ Definition of the Arexx features
- 1. Definition of the Arexx features
-
- The port has only some predefined Arexx commands, so you have to define
- all features you need in the binding files.
-
- To add an additional command, you have to do two things :
- - add the macro defining all commands that shall be executed
- (take the macro definitions in the /bindings/fun/* files as examples)
- - add a os-extension line with the following syntax :
- (os-extension ("AREXX " <name of the arexx command>", <name of the macro>))
- You have to replace the <name of the arexx command> with the name, that
- you have to send to execute the macro named <name of the macro> defined
- in the first step.
- REMEMBER : You have to use the EXACT syntax as specified above, including :
- - the " characters
- - exactly one space between the " and the
- <name of the arexx command>
- - at least two spaces between the ", sequence and the
- <name of the macro>
- REMEMBER : You have to declare a macro before(!) you use it in the
- os-extension line.
-
- See the example of the letsbeep command in the amiga.keys file.
-
- See the OSamiga.awk script for an easier use of the AREXX port using the
- AWK language.
- }}}
-
- {{{ Starting Origami with Arexx Port
- 2. Starting Origami with Arexx Port
-
- If you want to use the AREXX features of the origami, you have to
- - define AREXX during compilation (the version in src/amiga/bin has
- been compiled that way !)
- - start origami with the option -XA[REXX][=<port name>]
- (the parts in brackets [] can be specified, but are not needed)
- If you just use -XA or -XAREXX origami will use ORIGAMI as basename;
- if you specify a portname (behind a = character), origami will use
- this name as basename.
- Origami will try to open a port with the basename as portname. If
- this is impossible, origami will try <basename>1, <basename>2 ...
- <basename>9
- }}}
-
- {{{ Calling a arexx command
- 3. Calling a arexx command
-
- You can call an origami arexx command with the
- address <PORTNAME> <command name>
- arexx command. See your Arexx description or the src/amiga/rexx/test.rexx
- example for more information.
- }}}
-
- {{{ Passing arguments
- 4. Passing arguments
-
- If you want to use arguments in your macros (see next section), you have
- two possible ways to pass them :
- a) One argument can be passed be specifying it directly behind the command
- address <portname> <command> <argument>
- b) If you need more arguments you must use another way of passing :
- You can put one argument on the stack by calling the PUTARG command
- address <portname> PUTARG <argument>
-
- Example :
- You have a command --- named "message" --- that needs one argument :
- address ORIGAMI message "This is a testmessage"
- or
- address ORIGAMI putarg "This is a testmessage"
- address ORIGAMI message
- See examples test2.rexx and test3.rexx
-
- Example :
- You have a command --- named "saserror" --- that needs three arguments :
- address ORIGAMI putarg filename
- address ORIGAMI putarg linenumber
- address ORIGAMI saserror message
- or
- address ORIGAMI putarg filename
- address ORIGAMI putarg linenumber
- address ORIGAMI putarg message
- address ORIGAMI saserror
-
- REMEMBER : arguments will not be deleted from the stack, so if you would
- call message without argument, the last argument from the stack
- will be used.
- REMEMBER : the results returned by a command will be put on the stack too.
- }}}
-
- {{{ Using arguments in macros
- 5. Using arguments in macros
-
- If you want to write your own macros, that need arguments, you have to
- use the history names "arexx" for receiving the arguments.
- Each argument send to origami (e.g. by PUTARG) will be put in the
- "arexx" history, so you can get the arguments by the "history arexx"
- or the "get-history arexx <offset>" commands (see examples).
-
- REMEMBER : To use this method of argument passing, origami needs to
- know which history number (OCL-intern) the "arexx" history
- uses. There is no usual way defined in OCL to do this.
- I have changed the source of the amiga keybind binary, so
- all .rc-files compiled on an amiga will contain that number
- and automaticaly define that history. These files will work
- on all other computer systems. If you use a .rc-file from
- another computer system, origami will work, but you can not
- use the argument passing function.
-
- Note : keybind passes the history number by using a os-extension of the
- type :
- (os-extension ("AREXXHIST <number-of-history>))
- this line will automatically inserted. If you specify a line with
- the same syntax, origami can use the argument passing function
- even with .rc-files compiled on other systems, but you have to
- know the number (look into the viewrc output ... or guess :-))
- }}}
-
- {{{ Returning arguments
- 6. Returning arguments
-
- If you want to return data from inside origami to arexx you have to put
- the data on top of the arexx history. Origami will ALWAYS return the
- top-most argument. (See example test6.rexx)
- }}}
-
- {{{ Predefined commands
- 7. Predefined commands
-
- There are two predefined commands in the current port :
- - PUTARG : use this to put an argument on the history stack
- - ISDEF : use this function, to determine, if the function used as argument
- is defined.
- }}}
-
- {{{ What this port can not do. What will be possible in the future ?
- 8. What this port can not do. What will be possible in the future ?
-
- This is the first release, so there are not many possibilities now.
-
- You also can not call any OCL-commands directly. This feature will never
- be possible, cause that would result in a much bigger editor (i would have
- to include almost the whole keybind executable in the editor). I will
- add a command calling exact one OCL-token. This feature should be handled
- with care (when ready) due to problems :
- - the token code may change in each release !
- - arexx sources with tokens are very complicated to read and debug !
- - the tokens can only be used to call the lowest functions of OCL
- (call it the OCL-assembler-code). There are only a few checks (origami
- thinks keybinds codes are checked and stored correctly !), so your
- code may crash origami or your machine very easily.
- This shows the problems with that feature, so it will not be used much
- (i hope).
-
- The last feature i want to include in future releases concerns some
- build-in commands like PORTNAME (returning the portname), COMMAND
- (returning a list of all commands) and maybe some other features.
- }}}
-
- At the end a last warning : The arexx port is still experimental and may
- have some serious bugs (e.g. i didn't try, what happens, when origami
- executes a long arexx command and you use the arexx port a second time :-))
- Be careful ... thanks
-
- Have fun trying
- Thomas
-